package com.protocolterminal.base;

public class Seq {

	private int TpV;
	private int FIR;
	private int FIN;
	private int CON;
	private int PSEQ;

	public int getTpV() {
		return TpV;
	}

	public void setTpV(int tpV) {
		TpV = tpV;
	}

	public int getFIR() {
		return FIR;
	}

	public void setFIR(int fIR) {
		FIR = fIR;
	}

	public int getFIN() {
		return FIN;
	}

	public void setFIN(int fIN) {
		FIN = fIN;
	}

	public int getCON() {
		return CON;
	}

	public void setCON(int cON) {
		CON = cON;
	}

	public int getPSEQ() {
		return PSEQ;
	}

	public void setPSEQ(int pSEQ) {
		PSEQ = pSEQ;
	}

	public Seq(String seq) {
		this.TpV = (Integer.valueOf(seq, 16) & 0x80) >> 7;
		this.FIR = (Integer.valueOf(seq, 16) & 0x40) >> 6;
		this.FIN = (Integer.valueOf(seq, 16) & 0x20) >> 5;
		this.CON = (Integer.valueOf(seq, 16) & 0x10) >> 4;
		this.PSEQ = Integer.valueOf(seq, 16) & 0x0F;
	}

	/**
	 * D7 D6 D5 D4 D3-D0 </br>
	 * TpV FIR FIN CON PSEQ∕RSEQ</br>
	 * TpV=0，表示在附加信息域中无时间标签Tp；</br>
	 * TpV=1，表示在附加信息域中带有时间标签Tp（Tp定义见本部分4.3.4.6.4）。</br>
	 * FIR FIN 应用说明</br>
	 * 0 0 多帧：中间帧</br>
	 * 0 1 多帧：结束帧</br>
	 * 1 0 多帧：第1帧，有后续帧。</br>
	 * 1 1 单帧</br>
	 * 在所收到的报文中，CON位置“1”，表示需要对该帧报文进行确认；置“0”，表示不需要对该帧报文进行确认。</br>
	 * 
	 * @Title: FrameSeq.java
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param TpV
	 * @param FIR
	 * @param FIN
	 * @param CON
	 * @param PSEQ
	 */
	public Seq(int TpV, int FIR, int FIN, int CON, int PSEQ) {
		this.TpV = TpV;
		this.FIR = FIR;
		this.FIN = FIN;
		this.CON = CON;
		this.PSEQ = PSEQ;
	}

	@Override
	public String toString() {
		return Integer.toHexString((TpV << 7) | (FIR << 6) | (FIN << 5) | (CON << 4) | (PSEQ % 16) | 0x100)
				.substring(1);
	}

}
